Fiber optics enable the transmission of long strings of data in a serial fashion from a driver to a receiver at long distances (kilometers) and at very high data rates (billions of bits per second). This is in contrast to traditional electrical wires which allow data to be transmitted for only short distances at these data rates (10's of meters).
Fiber optic data transmission is, however, inherently noisy in that bit errors in the data are frequent. Error rates of one in a trillion or even one in a billion bits are common. Various checking methods including cyclic redundancy codes are used to detect these errors.
In some systems, once a transmission error is detected, the detecting end of the link may request the other end of the link to resend the frame in which the error occurred. There are several methods of determining which frame had the transmission error. One method is to assign a sequence number to each frame. If a receiver detects a frame with a sequence number that is out of order, it can assume that one or more frames were lost. Using the sequence number of the last correctly received frame, the receiver can request that lost frames be retransmitted.
Another method of determining the frame which is in error is to use separate checking fields for the header and information fields. Thus, if the information field is in error, the chances are that the header identifying the frame is still error free. Using the frame header information, the detecting end of the link can request the frame to be retransmitted. However, both of the methods described above constitute a low level recovery system where the retransmission of the frame is performed by the link hardware facility.
In the systems described above, it is still possible that a frame is lost and that a request for retransmission is never completed. Sequence numbers require subsequent frames for the detection of the frame in error, and using separate checking fields for the frame header does not guarantee that the frame header itself is not in error. Because of these shortcomings, it is usual practice to time outstanding requests to detect missing responses. These timers detect both damaged frames and unusually long response times in the system. If these timers run beyond their expiration intervals, a higher level recovery procedure, implemented in software, is invoked.
The facilities required by both the originator and recipient of data to retransmit the frame are not trivial, and a considerable simplification can be realized if the low level recovery actions can be efficiently escalated to a high level recovery procedure.
Thus what is needed is a mechanism by which lower level recovery actions, which necessarily require retransmission of frames, can be eliminated and the higher level recovery actions can be invoked without waiting for a timeout to occur. The mechanism of the present invention uses procedures at both ends of the link, and new frames are used to signal the error and the state of the link.